{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "import sys\n",
    "sys.path.append('..')\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import sklearn as sk\n",
    "import matplotlib.pyplot as plt\n",
    "# from utils.matplot import histogram\n",
    "import importlib\n",
    "# importlib.reload(utils.matplot)\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "np.random.seed(42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(150, 4)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn import datasets\n",
    "iris = datasets.load_iris()\n",
    "X=iris['data']\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "pca = PCA(n_components = 2) \n",
    "X2D = pca.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "i0=np.where(iris.target == 0)\n",
    "i1=np.where(iris.target == 1)\n",
    "i2=np.where(iris.target == 2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(50, 50, 50, 150)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(X[i0[0]]), len(i0[0]),len(iris.target[i0]), len(X2D)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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c9p747ocoX79+umss87Shg0bei4LhULasGFDxKxPPN3d3dq2bZtGjhyZq2G6R2mpWVm6uZnK0oDF8ikvJ1obQreeBrzYXiJZbn5vHLU0tnjxYs2bN09nn322Jk2apCVLlujgwYOaP3++JOnKK6/Upz/9adXVmdsX77zzTp177rkqLS3V/v371dDQoL///e+qrq6282U4S1WVVFFhnvE6OrJbWbp39eqSEjM/aZyzp1iBbMi3vJxcngbySTLtJZy+PT5dbn5vHBUIffWrX9W7776r2267Tbt371Z5ebnWrl3bk0C9fft2FfRqEvr+++9rwYIF2r17tz75yU/qrLPO0qZNm3Tqqafa9RKcqe8ZORurqfmSAAHkoXzMywm3IXQzL7aXSJab3xtHBUKStHDhQi1cuDDqdRs3boz4/d5779W9995rwahcLBcBS+/q1X0FAuZXT7d91QRS4PebH7NoDMP8mCD7vNheIllufm8ckyMEG8RrtxEImAnV6cinBAggD3kpLyefeLG9RLLc/N44bkYIFkomYAnPlaeS75NvCRBAHsp2Xo4TU/Ks3qrtxfYSyXLze0MghNiSDVhSXT7LxwQIIA9lKy/HiSl50bZq12+qz/lW7aryKlWMqXB8e4lccOt745g6QnbxbB0hySxl29BgLof1VVgo1dSYXyvjFRl5+mlpw4bIr6GStwqTADZyYh2g4N6gypaWKWQcPegCX4HaFrY5/o8vcs91dYRgg3jtNsIZm4m61X/xi2YwtWKFeSwrk/74RxIgAIs4MSUvma3aQLawNIbYerfb6D2nbhgfByzxls/CX0H7zigFAubX0LY29xcmAWzmxJS8dLdqZzunyMocJTe2rnAKAiHEd9550oIF0vPPm79//vPmklg4YEm2W31vvROt3V6YBLCZE1Py0tmqne2cIitzlOzKh4KJHKEEPJ0jFC3DMjwbFM6wjJeAEEtBgTR3rpRkvzcA6fNCjlC2c4qszFEiHyp3yBFCZpKtIRSr4InP57yvoYALObEmUXirdoGvQIW+wohjtK3a2c4psjJHKdFzNfyxQbXra1X5m0rVrq9VcG8wa88NE0tjiC6VGkLRCp5ccIE0c2b05ARK4wKWcmKvsFS2ame7/UMmj5dqrk+85woZIf18y89V6CtkySyHCIQQXaoZltEKniRKtAZgGSf2CisdXJpUI890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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X2D[i0][:,0], X2D[i0][:,1], label='i0', color='r', s=25, marker=\"o\")\n",
    "plt.scatter(X2D[i1][:,0], X2D[i1][:,1], label='i1', color='b', s=25, marker=\"o\")\n",
    "plt.scatter(X2D[i2][:,0], X2D[i2][:,1], label='i2', color='g', s=25, marker=\"o\")\n",
    "plt.xlabel('x')\n",
    "plt.ylabel('y')\n",
    "plt.title('Test')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "mlflow-dev-env",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
